// request.js
import { ref } from 'vue';
import { useCustomerStore } from '../stores/customer.js'; // 假设这是你的 customer store 文件路径

// 配置请求的基本路径
export const baseUrl = 'http://192.168.199.1:18080';

// 获取 customer store 实例
const customerStore = useCustomerStore();

/**
 * 请求拦截器
 * @param {Object} options - 请求配置项
 */
function requestInterceptor(options) {
    // 获取当前页面栈实例
    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1]; // 当前页面
    console.log('当前页面路径====>', currentPage.route);

    // 请求时携带 token 到后台
    options.header = {
		...options.header,
        'RequestFlag': 'Client', // 标识客户端请求
        'ClientAuthorization': customerStore.token, // 客户端的 token
    };

    uni.showLoading({
        title: '数据加载中,请稍等...'
    });
}

/**
 * 响应拦截器
 * @param {Object} response - 响应对象
 * @returns {Promise} - 处理后的响应对象
 */
async function responseInterceptor(response) {
    uni.hideLoading();

    if (response.statusCode === 401 || response.data.code === 401 || response.data.code === 8889) {
		console.log('response=====>',response);
        uni.navigateTo({
            url: `/pages/login/login?tokenError=true&msg=${response.data.msg}`
        });
    }

    return response;
}

/**
 * 发起网络请求
 * @param {Object} options - 请求配置项
 * @returns {Promise}
 */
export function request(options) {
    // 合并基础URL和请求路径
    options.url = baseUrl + options.url;

    // 请求拦截器
    requestInterceptor(options);

    return new Promise((resolve, reject) => {
        uni.request({
            ...options,
            success: async (response) => {
                try {
                    const processedResponse = await responseInterceptor(response);
                    resolve(processedResponse);
                } catch (error) {
                    reject(error);
                }
            },
            fail: (error) => {
                uni.hideLoading();
                reject(error);
            }
        });
    });
}

// 导出默认的 request 函数
export default request;